using System.Collections.Generic;
using Platform.CharacterData;
using UnityEngine;

/// <summary>
/// 派系
/// </summary>
public enum Faction
{
    Enemy,
    Hero,
}
// /// <summary>
// /// 种族   
// /// follow 约定受击特效是 种族字符串 + OnHitEffect
// /// </summary>
// public enum Race
// {
//     Human,
//     Skeleton,
// }
// /// <summary>
// /// 角色，作为角色数据的唯一标识
// /// 因为后续需要动态的加载
// /// </summary>
// public enum CharacterType
// {
//     WommanWarrior,
//     SkeletonSword,
// }

// public enum AttackDamageType
// {
//     Cut,
//     Blunt,
//     Pierece,
//     /// <summary>
//     /// 匕首等小型武器
//     /// </summary>
//     Stab,
// }




// [CreateAssetMenu(menuName = "Character/CharacterDataSO")]
// public class CharacterDataSO : ScriptableObject
// {
//     public List<CharacterDataDetails> characterDataList = new List<CharacterDataDetails>();

//     public CharacterDataDetails GetCharacterDataDetails(CharacterType characterType) => characterDataList.Find(x => x.characterType == characterType);

//     private void OnEnable()//OnValidate
//     {

//         // attackRangeDict.Clear();
//         // foreach (var item in attackRangeList)
//         // {
//         //     if (!attackRangeDict.ContainsKey(item.Key))
//         //     {
//         //         attackRangeDict.Add(item.Key, item.Value);
//         //     }
//         // }
//     }
// }

// /// <summary>
// /// 添加也要在stats追加 一一对应
// /// </summary>
// [System.Serializable]
// public class CharacterDataDetails
// {
//     // 应该用id
//     public CharacterType characterType;
//     public SkillDataSO skillDataList;

//     [Header("其他属性")]
//     public GameObject prefab;
//     public RuntimeAnimatorController animController;

//     [Header("阵营")]
//     public Faction faction;

//     [Header("种族")]
//     public Race race;

//     [Header("描述")]
//     public string description;
//     public Sprite menuSprite;

//     [Header("基础属性")]
//     public int jumpHeight;
//     public float moveSpeed = 1f;

//     #region  主属性

//     [Header("主属性")]
//     public int strength; //1 伤害 1% 暴击力量
//     public int agility; // 1 闪避 1% 暴击
//     public int intelligence; // 1 魔法伤害 3% 法抗
//     public int vitality; // 5hp

//     [Header("防御属性")]
//     public int maxHealth;
//     public int armor;

//     /// <summary>
//     ///    背后防御倍率
//     /// </summary>
//     [Header("背后防御倍率")]
//     public float backArmorMultiplier = 1;

//     /// <summary>
//     /// 法抗
//     /// </summary>
//     public int magicResistance;
//     /// <summary>
//     /// 闪避
//     /// </summary>
//     public int evasion;

//     [Header("抗性")]
//     /// <summary>
//     /// 击退抗性
//     /// </summary>   
//     public int knockbackResistance;

//     [Header("攻击属性")]
//     public int damage;
//     public float critChangce;
//     public float critPower = 1.5f;

//     [Header("魔法攻击属性")]
//     public int fireDamage;
//     public int iceDamage;
//     public int electricDamage;
//     public int toxicDamage;
//     #endregion

//     #region 受击
//     [Header("武器击退力")]
//     public float knockBackPower = 1;
//     public Vector2 knockBackForce;
//     #endregion

//     #region  其他属性   
//     /// <summary>
//     /// 轻攻击和重攻击分别设置
//     /// </summary>
//     [Header("攻击伤害类型")]
//     public AttackDamageType lightAttackDamageType;
//     public AttackDamageType heavyAttackDamageType;
//     [Header("连击位移")]
//     public float[] lightDoubleAttackMovement;
//     public float[] heavyDoubleAttackMovement;

//     // [Header("攻击状态对应的碰撞盒")]
//     // public List<KeyValuePair<Entity.States, AttackRanges>> attackRangeList = new();

//     // [Header("combo配置")]
//     // public int LightDoubleAttackComboMax;
//     // public int heavyDoubleAttackComboMax;

//     [Header("击晕/硬直")]
//     public float stunDuration = 0.5f;
//     public Vector2 stunDirection;
//     public GameObject counterImg;

//     [Header("打击特效")]
//     public HitEffect lightHitEffect;
//     public HitEffect heavyHitEffect;

//     #region 打击感
//     [Header("打击帧数")]
//     [Range(0.05f, 0.2f)]
//     public float lightFreaze;
//     [Range(0.05f, 0.2f)]
//     public float heavyFreaze;
//     // todo 震动力量可以直接根据攻击的位移或者力量来计算
//     public Vector2 lightPower;
//     public Vector2 heavyPower;
//     #endregion

//     #endregion
// }
